﻿using SQLite;
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.Json.Serialization;

namespace TabbedTemplate.Models
{
    /// <summary>
    /// 可追踪收藏类。
    /// </summary>
    [Table("Favorite")]
    public class TrackableFavorite : Favorite
    {
        /******** 公开变量 ********/

        /// <summary>
        /// 是否收藏。
        /// </summary>
        public override bool IsFavorite
        {
            get => base.IsFavorite;
            set
            {
                base.IsFavorite = value;
                Updated = true;
            }
        }

        /// <summary>
        /// 时间戳。
        /// </summary>
        public override long Timestamp
        {
            get => base.Timestamp;
            set
            {
                base.Timestamp = value;
                Updated = true;
            }
        }

        /// <summary>
        /// 是否更新。
        /// </summary>
        [Ignore]
        [JsonIgnore]
        public bool Updated { get; private set; }

        /******** 私有变量 ********/

        /******** 继承方法 ********/

        /******** 公开方法 ********/

        /// <summary>
        /// 可追踪收藏类。
        /// </summary>
        /// <param name="favorite">收藏。</param>
        public TrackableFavorite(Favorite favorite)
        {
            StoreUid = favorite.StoreUid;
            base.IsFavorite = favorite.IsFavorite;
            base.Timestamp = favorite.Timestamp;
        }

        /// <summary>
        /// 克隆为已更新的可追踪收藏。
        /// </summary>
        public TrackableFavorite CloneAsUpdated()
        {
            return new TrackableFavorite(this) { Updated = true };
        }

        /******** 私有方法 ********/
    }
}
